package com.cn.wanxi.elasticsearch;

import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * ElasticSearch 配置
 */
@Configuration
public class ElasticSearchConfig {
//
//    /**
//     * 协议
//     */
//    @Value("${elasticsearch.schema:http}")
//    private String schema;
//
//    /**
//     * 集群地址，如果有多个用“,”隔开
//     */
//    @Value("${elasticsearch.address}")
//    private String address;
//
//    /**
//     * 连接超时时间
//     */
//    @Value("${elasticsearch.connectTimeout:5000}")
//    private int connectTimeout;
//
//    /**
//     * Socket 连接超时时间
//     */
//    @Value("${elasticsearch.socketTimeout:10000}")
//    private int socketTimeout;
//
//    /**
//     * 获取连接的超时时间
//     */
//    @Value("${elasticsearch.connectionRequestTimeout:5000}")
//    private int connectionRequestTimeout;
//
//    /**
//     * 最大连接数
//     */
//    @Value("${elasticsearch.maxConnectNum:100}")
//    private int maxConnectNum;
//
//    /**
//     * 最大路由连接数
//     */
//    @Value("${elasticsearch.maxConnectPerRoute:100}")
//    private int maxConnectPerRoute;

    @Bean
    public RestHighLevelClient restHighLevelClient() {
//        // 拆分地址
//        List<HttpHost> hostLists = new ArrayList<>();
//        String[] hostList = address.split(",");
//        for (String addr : hostList) {
//            String host = addr.split(":")[0];
//            String port = addr.split(":")[1];
//            hostLists.add(new HttpHost(host, Integer.parseInt(port), schema));
//        }
//        // 转换成 HttpHost 数组
//        HttpHost[] httpHost = hostLists.toArray(new HttpHost[]{});
//        // 构建连接对象
//        RestClientBuilder builder = RestClient.builder(httpHost);
//        // 异步连接延时配置
//        builder.setRequestConfigCallback(requestConfigBuilder -> {
//            requestConfigBuilder.setConnectTimeout(connectTimeout);
//            requestConfigBuilder.setSocketTimeout(socketTimeout);
//            requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeout);
//            return requestConfigBuilder;
//        });
//        // 异步连接数配置
//        builder.setHttpClientConfigCallback(httpClientBuilder -> {
//            httpClientBuilder.setMaxConnTotal(maxConnectNum);
//            httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute);
//            return httpClientBuilder;
//        });
        RestClientBuilder builder = null;

        builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));

        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);
        return restHighLevelClient;
    }



}